﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;
using CajaChica.Clases;
using CajaChica.Entidades;
using CajaChica.Utilerias;
namespace CajaChica.Formularios
{
    public partial class frmOperacionesAdelanto : CajaChica.Formularios.frmMaestro
    {
        clsAdelantos objAdelanto;
        clsPersona objPersonas;
        public frmOperacionesAdelanto()
        {
            InitializeComponent();
        }

        private void sbpNuevo_Click(object sender, EventArgs e)
        {
            sbMantenimiento.ExpandedPanel = sbpNuevo;
            stcMaestro.SelectedTab = stiRegistro;
            txtNumero.Select();
        }

        private void btnNuevoGuardar_Click(object sender, EventArgs e)
        {
            objAdelanto = new clsAdelantos();
            clsArchivoConfiguracion conf = new clsArchivoConfiguracion();
            string moneda = cboMoneda.Text.ToString();
            try
            {
                objAdelanto.Guardar(
                    int.Parse(txtNumero.Text),
                    DateTime.Parse(txtFecha.Text),
                    int.Parse(cboResponsable.SelectedValue.ToString()),
                    decimal.Parse(txtMontoNumero.Text),
                    moneda.Substring(0, 1),
                    txtMontoLetras.Text,
                    txtConcepto.Text.Trim(),
                    int.Parse(cboSolicitante.SelectedValue.ToString()),
                    txtArea.Text.Trim(),
                    txtCargo.Text.Trim(),
                    cboEstadoAdelanto.Text.ToString(),
                    DateTime.Parse(txtEstadoFecha.Text),
                    int.Parse(conf.LeerCodigoUsuario().ToString()));
                MessageBox.Show("SE HA REGISTRADO EL ADELANTO", "SISTEMA DE CAJA CHICA",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SE HA PRODUCIDO UN ERROR AL REGISTRAR EL ADELANTO\nINTENTE DE NUEVO", 
                    "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            this.LimpiarControles();
            this.SelectMaxId();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcMaestro.SelectedTab = stiListado;
            txtCriterio.Select();
            this.SelectMaxId();
            grdListado.DataSource = objAdelanto.CargarDatosGridView();
                
        }

        private void btnNuevoCancelar_Click(object sender, EventArgs e)
        {
            this.LimpiarControles();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcMaestro.SelectedTab = stiListado;
            txtCriterio.Select();
        }

        private void LimpiarControles()
        {
            txtArea.Text = "";
            txtCargo.Text = "";
            txtConcepto.Text = "";
            txtCriterio.Text = "";
            txtDniCePasaporteResponsable.Text = "";
            txtDniCePasaporteSolicitante.Text = "";
            txtEstadoFecha.Text = "";
            txtFecha.Text = "";
            txtMontoLetras.Text = "";
            txtMontoNumero.Text = "0";
            txtNumero.Text = "0";
            cboEstadoAdelanto.SelectedIndex = -1;
            cboResponsable.SelectedIndex = 0;
            cboSolicitante.SelectedIndex = 0;
        }

        public void SelectMaxId()
        {
            cajaEntities objCajaEntidades = new cajaEntities();
            var maximo_numero = (from a in objCajaEntidades.adelantos
                                 select a.numero).Max();
            txtNumero.Text = (maximo_numero + 1).ToString();
        }

        private void frmOperacionesAdelanto_Load(object sender, EventArgs e)
        {
            this.SelectMaxId();
            objPersonas = new clsPersona();
            objAdelanto = new clsAdelantos();
            
            cboResponsable.DisplayMember = "RAZON_SOCIAL";
            cboResponsable.ValueMember = "CODIGO";
            cboResponsable.DataSource = objPersonas.CargarDatosEmpleadosComboBox();
            
            cboSolicitante.DisplayMember = "RAZON_SOCIAL";
            cboSolicitante.ValueMember = "CODIGO";
            cboSolicitante.DataSource = objPersonas.CargarDatosEmpleadosComboBox();
            txtArea.CharacterCasing = CharacterCasing.Upper;
            txtCargo.CharacterCasing = CharacterCasing.Upper;
            txtConcepto.CharacterCasing = CharacterCasing.Upper;
            txtCriterio.CharacterCasing = CharacterCasing.Upper;
            txtDniCePasaporteResponsable.CharacterCasing = CharacterCasing.Upper;
            txtDniCePasaporteSolicitante.CharacterCasing = CharacterCasing.Upper;
            txtMontoLetras.CharacterCasing = CharacterCasing.Upper;
            this.grdListado.AutoGenerateColumns = false;
            grdListado.DataSource = objAdelanto.CargarDatosGridView();
            this.AsignarPropiedadesDataGridView();
            cboEstadoAdelanto.Items.Add("PENDIENTE POR RENDIR");
            cboEstadoAdelanto.Items.Add("RENDIDO");
            cboEstadoAdelanto.Items.Add("RENDICION CONFORME");
            cboMoneda.Items.Add("SOLES");
            cboMoneda.Items.Add("DOLARES");
        }

        private void AsignarPropiedadesDataGridView()
        {
            grdListado.AutoGenerateColumns = false;
            grdListado.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            grdListado.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            grdListado.Columns[0].DataPropertyName = "CODIGO";
            grdListado.Columns[1].DataPropertyName = "NUMERO";
            grdListado.Columns[2].DataPropertyName = "FECHA";
            grdListado.Columns[3].DataPropertyName = "RESPONSABLE";
            grdListado.Columns[4].DataPropertyName = "MONTO";
            grdListado.Columns[5].DataPropertyName = "CONCEPTO";
            grdListado.Columns[6].DataPropertyName = "SOLICITANTE";
            grdListado.Columns[7].DataPropertyName = "ESTADO";
            
        }

        private void btnNuevoLimpiar_Click(object sender, EventArgs e)
        {
            this.LimpiarControles();
            txtNumero.Select();
        }

        private void cboResponsable_SelectedIndexChanged(object sender, EventArgs e)
        {
            int codigo = int.Parse(cboResponsable.SelectedValue.ToString());
            try
            {
                cajaEntities ce = new cajaEntities();
                personas persona = ce.personas.FirstOrDefault(
                    p => p.id == codigo);
                txtDniCePasaporteResponsable.Text = persona.rut;
            }
            catch (Exception ex)
            {
                MessageBox.Show("EL RUC INGRESADO NO EXISTE",
                "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void cboSolicitante_SelectedIndexChanged(object sender, EventArgs e)
        {
            int codigo = int.Parse(cboSolicitante.SelectedValue.ToString());
            try
            {
                cajaEntities ce = new cajaEntities();
                personas persona = ce.personas.FirstOrDefault(
                    p => p.id == codigo);
                txtDniCePasaporteSolicitante.Text = persona.rut;
            }
            catch (Exception ex)
            {
                MessageBox.Show("EL RUC INGRESADO NO EXISTE",
                "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void txtMontoNumero_ValueChanged(object sender, EventArgs e)
        {
            clsNumeroLetras numeroLetra = new clsNumeroLetras();
            //txtMontoLetras.Text = numeroLetra.Convertir(txtMontoNumero.Text, true);
            //txtMontoLetras.Text = numeroLetra.ConvertirCadena(txtMontoNumero.Text);
            if (cboMoneda.Text.Equals("SOLES"))
            {
                txtMontoLetras.Text = numeroLetra.Convert(decimal.Parse(txtMontoNumero.Text), "S");
            }
            else
            {
                txtMontoLetras.Text = numeroLetra.Convert(decimal.Parse(txtMontoNumero.Text), "D");
            }
            
        }

        private void btnNuevoSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtCriterio_TextChanged(object sender, EventArgs e)
        {
            objAdelanto = new clsAdelantos();
            if (string.Empty != txtCriterio.Text.Trim())
            {
                grdListado.DataSource = objAdelanto.Buscar(txtCriterio.Text.Trim());
            }
            else
            {
                grdListado.DataSource = objAdelanto.CargarDatosGridView();
            }
        }

        private void cboMoneda_SelectedIndexChanged(object sender, EventArgs e)
        {
            clsNumeroLetras numeroLetra = new clsNumeroLetras();

            if (string.Empty != txtMontoNumero.Text)
            {
                if (cboMoneda.Text.Equals("SOLES"))
                {
                    txtMontoLetras.Text = numeroLetra.Convert(decimal.Parse(txtMontoNumero.Text), "S");
                }
                else
                {
                    txtMontoLetras.Text = numeroLetra.Convert(decimal.Parse(txtMontoNumero.Text), "D");
                }
            }
            else
            {
                MessageBox.Show("POR FAVOR INGRESE UN MONTO", "SISTEMA DE CAJA CHICA",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtMontoNumero.Select();
            }
            
        }

        private void txtDniCePasaporteResponsable_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                try
                {
                    cajaEntities ce = new cajaEntities();
                    personas persona = ce.personas.FirstOrDefault(
                        p => p.rut == txtDniCePasaporteResponsable.Text.Trim());
                    cboResponsable.Text = persona.rs;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("EL RUC INGRESADO NO EXISTE", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void txtDniCePasaporteSolicitante_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                try
                {
                    cajaEntities ce = new cajaEntities();
                    personas persona = ce.personas.FirstOrDefault(
                        p => p.rut == txtDniCePasaporteSolicitante.Text.Trim());
                    cboSolicitante.Text = persona.rs;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("EL RUC INGRESADO NO EXISTE", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void btnVerSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }


    }
}
